import request from '@/utils/request';
import qs from 'qs';
import { ResponseData } from '../typing';
// 参数接口
export interface UpdateOrderClassifyParams {
  // 分类名称 */
    classifyName: string;
  // 条线 */
    orderProfessionalLine: string;
  // 工单类型（父级分类），0报修、1投诉 */
    orderType: number;
  // 工单子类（报修的子类，多选则用逗号分开0,1），0户内、1公区 */
    orderTypeSub?: string;
  // 分类状态，0禁用，1启用 */
    status: number;
  // 主键 */
    id: number;
}

/**
 * 更新工单分类
 * @param {object} params 管理后台 - 工单分类
 * @param {string} params.classifyName 分类名称
 * @param {string} params.orderProfessionalLine 条线
 * @param {number} params.orderType 工单类型（父级分类），0报修、1投诉
 * @param {string} params.orderTypeSub 工单子类（报修的子类，多选则用逗号分开0,1），0户内、1公区
 * @param {number} params.status 分类状态，0禁用，1启用
 * @param {number} params.id 主键
 * @returns
 */
export function updateOrderClassify(params: UpdateOrderClassifyParams): Promise<ResponseData<boolean>> {
    return request.put(`/yfwy/order-classify/update`, params);
}
// 参数接口
export interface GetOrderClassifyPageParams {
  // 当前第几页(默认1) */
    current?: number;
  // 每页条数(默认20) */
    size?: number;
  // 分类名称 */
    classifyName?: string;
  // 条线 */
    orderProfessionalLine?: string;
  // 工单类型（父级分类），0报修、1投诉 */
    orderType?: number;
  // 工单子类（报修类型），0户内、1公区 */
    orderTypeSub?: string;
  // 分类状态，0禁用，1启用 */
    status?: number;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
          // 主键 */
            id?: Record<string, unknown>;
          // 分类名称 */
            classifyName?: string;
          // 条线 */
            orderProfessionalLine?: string;
          // 工单类型（父级分类），0报修、1投诉 */
            orderType?: Record<string, unknown>;
          // 工单子类（报修类型），0户内、1公区 */
            orderTypeSub?: string;
          // 分类状态，0禁用，1启用 */
            status?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetOrderClassifyPageRes {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
          // 主键 */
            id: number;
          // 分类名称 */
            classifyName: string;
          // 条线 */
            orderProfessionalLine: string;
          // 工单类型（父级分类），0报修、1投诉 */
            orderType: number;
          // 工单子类（报修类型），0户内、1公区 */
            orderTypeSub: string;
          // 分类状态，0禁用，1启用 */
            status: number;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
/**
 * 获取工单分类分页
 * @param {object} params 管理后台 - 工单分类分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.classifyName 分类名称
 * @param {string} params.orderProfessionalLine 条线
 * @param {number} params.orderType 工单类型（父级分类），0报修、1投诉
 * @param {string} params.orderTypeSub 工单子类（报修类型），0户内、1公区
 * @param {number} params.status 分类状态，0禁用，1启用
 * @param {object} params.page
 * @returns
 */
export function getOrderClassifyPage(params: GetOrderClassifyPageParams): Promise<GetOrderClassifyPageRes> {
    return request.post(`/yfwy/order-classify/page`, params);
}
// 参数接口
export interface GetListParams {
  // 当前第几页(默认1) */
    current?: number;
  // 每页条数(默认20) */
    size?: number;
  // 分类名称 */
    classifyName?: string;
  // 条线 */
    orderProfessionalLine?: string;
  // 工单类型（父级分类），0报修、1投诉 */
    orderType?: number;
  // 工单子类（报修类型），0户内、1公区 */
    orderTypeSub?: string;
  // 分类状态，0禁用，1启用 */
    status?: number;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
          // 主键 */
            id?: Record<string, unknown>;
          // 分类名称 */
            classifyName?: string;
          // 条线 */
            orderProfessionalLine?: string;
          // 工单类型（父级分类），0报修、1投诉 */
            orderType?: Record<string, unknown>;
          // 工单子类（报修类型），0户内、1公区 */
            orderTypeSub?: string;
          // 分类状态，0禁用，1启用 */
            status?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetListRes {
    code: number;
    data: {
      // 主键 */
        id: number;
      // 分类名称 */
        classifyName: string;
      // 条线 */
        orderProfessionalLine: string;
      // 工单类型（父级分类），0报修、1投诉 */
        orderType: number;
      // 工单子类（报修类型），0户内、1公区 */
        orderTypeSub: string;
      // 分类状态，0禁用，1启用 */
        status: number;
    }[];
    msg: string;
}
/**
 * 查询工单分类集合
 * @param {object} params 管理后台 - 工单分类分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.classifyName 分类名称
 * @param {string} params.orderProfessionalLine 条线
 * @param {number} params.orderType 工单类型（父级分类），0报修、1投诉
 * @param {string} params.orderTypeSub 工单子类（报修类型），0户内、1公区
 * @param {number} params.status 分类状态，0禁用，1启用
 * @param {object} params.page
 * @returns
 */
export function getList(params: GetListParams): Promise<GetListRes> {
    return request.post(`/yfwy/order-classify/getList`, params);
}
// 响应接口
export interface GetListToConvertRes {
    code: number;
    data: {
      // 主键 */
        id: number;
      // 分类名称 */
        classifyName: string;
      // 条线 */
        orderProfessionalLine: string;
      // 工单类型（父级分类），0报修、1投诉 */
        orderType: number;
      // 工单子类（报修类型），0户内、1公区 */
        orderTypeSub: string;
      // 分类状态，0禁用，1启用 */
        status: number;
    }[];
    msg: string;
}
/**
 * 根据工单ID查询工单分类集合（转分类使用）
 * @param {string} id
 * @returns
 */
export function getListToConvert(id: number): Promise<GetListToConvertRes> {
    return request.post(`/yfwy/order-classify/getListToConvert/${id}`);
}
// 参数接口
export interface ExportOrderClassifyExcelParams {
  // 当前第几页(默认1) */
    current?: number;
  // 每页条数(默认20) */
    size?: number;
  // 分类名称 */
    classifyName?: string;
  // 条线 */
    orderProfessionalLine?: string;
  // 工单类型（父级分类），0报修、1投诉 */
    orderType?: number;
  // 工单子类（报修类型），0户内、1公区 */
    orderTypeSub?: string;
  // 分类状态，0禁用，1启用 */
    status?: number;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
          // 主键 */
            id?: Record<string, unknown>;
          // 分类名称 */
            classifyName?: string;
          // 条线 */
            orderProfessionalLine?: string;
          // 工单类型（父级分类），0报修、1投诉 */
            orderType?: Record<string, unknown>;
          // 工单子类（报修类型），0户内、1公区 */
            orderTypeSub?: string;
          // 分类状态，0禁用，1启用 */
            status?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
/**
 * 导出工单分类 Excel
 * @param {object} params 管理后台 - 工单分类分页 Request VO
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {string} params.classifyName 分类名称
 * @param {string} params.orderProfessionalLine 条线
 * @param {number} params.orderType 工单类型（父级分类），0报修、1投诉
 * @param {string} params.orderTypeSub 工单子类（报修类型），0户内、1公区
 * @param {number} params.status 分类状态，0禁用，1启用
 * @param {object} params.page
 * @returns
 */
export function exportOrderClassifyExcel(params: ExportOrderClassifyExcelParams): romise<Blob> {
    return request.post(`/yfwy/order-classify/exportExcel`, params, {
        responseType: 'blob',
    });
}

// 参数接口
export interface CreateOrderClassifyParams {
  // 分类名称 */
    classifyName: string;
  // 条线 */
    orderProfessionalLine: string;
  // 工单类型（父级分类），0报修、1投诉 */
    orderType: number;
  // 工单子类（报修的子类，多选则用逗号分开0,1），0户内、1公区 */
    orderTypeSub?: string;
  // 分类状态，0禁用，1启用 */
    status: number;
}

/**
 * 创建工单分类
 * @param {object} params 管理后台 - 工单分类
 * @param {string} params.classifyName 分类名称
 * @param {string} params.orderProfessionalLine 条线
 * @param {number} params.orderType 工单类型（父级分类），0报修、1投诉
 * @param {string} params.orderTypeSub 工单子类（报修的子类，多选则用逗号分开0,1），0户内、1公区
 * @param {number} params.status 分类状态，0禁用，1启用
 * @returns
 */
export function createOrderClassify(params: CreateOrderClassifyParams): Promise<ResponseData<number>> {
    return request.post(`/yfwy/order-classify/create`, params);
}
// 响应接口
export interface GetOrderClassifyRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
      // 主键 */
        id: number;
      // 分类名称 */
        classifyName: string;
      // 条线 */
        orderProfessionalLine: string;
      // 工单类型（父级分类），0报修、1投诉 */
        orderType: number;
      // 工单子类（报修类型），0户内、1公区 */
        orderTypeSub: string;
      // 分类状态，0禁用，1启用 */
        status: number;
    };
    msg: string;
}
/**
 * 获取工单分类
 * @param {string} id
 * @returns
 */
export function getOrderClassify(id: number): Promise<GetOrderClassifyRes> {
    return request.get(`/yfwy/order-classify/get/${id}`);
}
/**
 * 删除工单分类
 * @param {string} id
 * @returns
 */
export function deleteOrderClassify(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/yfwy/order-classify/delete/${id}`);
}
